//package com.ruoyi.danny.controller;
//
//
//import org.activiti.engine.*;
//import org.activiti.engine.repository.Deployment;
//import org.activiti.engine.runtime.ProcessInstance;
//import org.activiti.engine.task.Task;
//import org.springframework.web.bind.annotation.RequestMapping;
//import org.springframework.web.bind.annotation.RestController;
//
//import java.util.List;
//
//
//@RestController
//@RequestMapping("/flow2")
//public class Activiti723gController {
//    /**
//     * 流程部署操作
//     */
//    @Test
//    public void test1() {
//        // 1.获取ProcessEngine对象
//        ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
//        // 2.完成流程的部署操作 需要通过RepositoryService来完成
//        RepositoryService repositoryService = processEngine.getRepositoryService();
//        // 3.完成部署操作
//        Deployment deploy = repositoryService.createDeployment()
//                .addClasspathResource("flow/test5.bpmn20.xml")
//                .name("候选人")
//                .deploy(); // 是一个流程部署的行为 可以部署多个流程定义的
//        System.out.println(deploy.getId());
//        System.out.println(deploy.getName());
//    }
//    /**
//     * 发起一个流程
//     */
//    @Test
//    public void test3() {
//        ProcessEngine engine = ProcessEngines.getDefaultProcessEngine();
//        // 发起流程 需要通过 runtimeService来实现
//        RuntimeService runtimeService = engine.getRuntimeService();
//        // 通过流程定义ID来启动流程 返回的是流程实例对象
//        ProcessInstance processInstance = runtimeService
//                .startProcessInstanceById("holiday1:2:90003");
//        System.out.println("processInstance.getId() = " + processInstance.getId());
//        System.out.println("processInstance.getDeploymentId() = " +
//                processInstance.getDeploymentId());
//        System.out.println("processInstance.getDescription() = " +
//                processInstance.getDescription());
//    }
//
//
//
//    /**
//     * 候选人 审批任务查询
//     * 张三 登录OA系统
//     */
//    @Test
//    public void test4() {
//        ProcessEngine engine = ProcessEngines.getDefaultProcessEngine();
//        TaskService taskService = engine.getTaskService();
//        List < Task > list = taskService.createTaskQuery()
//                .taskCandidateUser("张三") // 根据候选人查询审批任务
//                .list();
//        if (list != null && list.size() > 0) {
//            for (Task task: list) {
//                System.out.println("task.getId() = " + task.getId());
//                //taskService.complete(task.getId());
//            }
//        }
//    }
//    /**
//     * 待办任务的 拾取 操作
//     * 从候选人 --> 处理人
//     * 一个任务如果被拾取后。其他的候选人就查询不到改任务信息了
//     */
//    @Test
//    public void test5() {
//        ProcessEngine engine = ProcessEngines.getDefaultProcessEngine();
//        TaskService taskService = engine.getTaskService();
//        List < Task > list = taskService.createTaskQuery()
//                .taskCandidateUser("王五") // 根据候选人查询审批任务
//                .list();
//        if (list != null && list.size() > 0) {
//            for (Task task: list) {
//                // 李四 拾取了 这个任务的审批权限 --> 变成了这个任务的审批人
//                taskService.claim(task.getId(), "王五");
//            }
//        }
//    }
//}
